﻿/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

using System.IO;
using System.Text;

namespace Hackerzhuli.Code.Editor.Messaging
{
    internal class Serializer
    {
        private readonly MemoryStream _stream;
        private readonly BinaryWriter _writer;

        public Serializer()
        {
            _stream = new MemoryStream();
            _writer = new BinaryWriter(_stream);
        }

        public void WriteInt32(int i)
        {
            _writer.Write(i);
        }

        public void WriteString(string s)
        {
            var bytes = Encoding.UTF8.GetBytes(s ?? "");
            if (bytes.Length > 0)
            {
                _writer.Write(bytes.Length);
                _writer.Write(bytes);
            }
            else
            {
                _writer.Write(0);
            }
        }

        public byte[] Buffer()
        {
            return _stream.ToArray();
        }
    }
}